﻿namespace Service
{
	using System;
	using System.Linq;
	using System.Collections.Generic;

	public class ShoppingCartItemService : IShoppingCartItemService
	{
		private Data.Repository.IShoppingCartItemRepository _shoppingCartItemRepository;

		#region IShoppingCartItemService Members

		public int CreateNewShoppingCartItem(Data.Entity.ShoppingCartItem theNewShoppingCartItem)
		{
			if (theNewShoppingCartItem == null)
			{
				return 0;
			}

			if (_shoppingCartItemRepository == null)
			{
				_shoppingCartItemRepository = new Data.Repository.ShoppingCartItemRepository();
			}

			return _shoppingCartItemRepository.CreateNewShoppingCartItem(theNewShoppingCartItem);
		}

		public int DeleteShoppingCartItem(int id)
		{
			if (id <= 0)
			{
				return 0;
			}

			if (_shoppingCartItemRepository == null)
			{
				_shoppingCartItemRepository = new Data.Repository.ShoppingCartItemRepository();
			}

			return _shoppingCartItemRepository.DeleteShoppingCartItem(id);
		}

		public IList<Data.Entity.ShoppingCartItem> GetShoppingCartItemByUser(Guid userID)
		{
			if (_shoppingCartItemRepository == null)
			{
				_shoppingCartItemRepository = new Data.Repository.ShoppingCartItemRepository();
			}

			return _shoppingCartItemRepository.GetShoppingCartItemByUser(userID);
		}

		public IList<Data.Entity.ShoppingCartType> GetAllShoppingCartType()
		{
			if (_shoppingCartItemRepository == null)
			{
				_shoppingCartItemRepository = new Data.Repository.ShoppingCartItemRepository();
			}

			return _shoppingCartItemRepository.GetAllShoppingCartType();
		}

		public int UpdateShoppingCartItem(Data.Entity.ShoppingCartItem theShoppingCartItem)
		{
			if (theShoppingCartItem == null || theShoppingCartItem.ShoppingCartItemID <= 0)
			{
				return 0;
			}

			if (_shoppingCartItemRepository == null)
			{
				_shoppingCartItemRepository = new Data.Repository.ShoppingCartItemRepository();
			}

			return _shoppingCartItemRepository.UpdateShoppingCartItem(theShoppingCartItem);
		}

		public Data.Entity.ShoppingCartItem GetTheShoppingCartItem(int id)
		{
			if (id <= 0)
			{
				return null;
			}

			if (_shoppingCartItemRepository == null)
			{
				_shoppingCartItemRepository = new Data.Repository.ShoppingCartItemRepository();
			}

			return _shoppingCartItemRepository.GetTheShoppingCartItem(id);
		}

		#endregion
	}
}
